AWS KMS
https://gyazo.com/e4cb46aca610fb1a255d1831bef8a2bb
わからないこと
カスタムキーストア
Encryption Context
AWS マネージドな CMK とカスタムの CMK の使い所
エイリアス
読む
概要
AWS Key Management Service (AWS KMS) は、データの暗号化に使用される暗号化キーの作成と管理を容易にするマネージド型サービスです。AWS KMS で作成したマスターキーは、FIPS 140-2 検証済み暗号化モジュールによって保護されています。
データの暗号化に利用する
エンベロープ暗号化を使用した 2 層キー階層
マスターキーから、データキーを作成する
マスターキーは、KMS の外に漏れることはない
データキーは、利用する毎に使い捨てる
概念
CMK (Customer Master Key)
最大 4 KB まで暗号化/複合化できる。データキー を生成/暗号化/復号する。
カスタマー管理 CMK
AWS 管理 CMK
AWS 所有 CMK
データキー
大量のデータや、他のデータ暗号化キーを暗号化するための暗号化キー。指定した CMK を使用して GenerateDataKey を実行することで、データキー と 暗号化済みのデータキー の2つを取得できる。後者のみを取得することもできる。 エンベロープ暗号化
通常、暗号化した場合、その 暗号化に利用したキーをどう管理するか? という問題がある。AWS KMS では、データの暗号化に利用するキーを Customer Master Key として、さらにそれを Master Key で暗号化する。Master Key は AWS KMS から外に出ないようになっている。 データキーで データ を暗号化
別のキーで データキー 暗号化
エイリアス
通常の ARN
arn:aws:kms:us-east-2:123456789012:key/12345678-1234-1234-1234-123456789012
エイリアス名により参照する ARN
arn:aws:kms:us-east-2:123456789012:alias/MyAliasName
KMS API
Master Key
CreateKey 作成
DisableKey 無効化
EnableKey 有効化
EnableKeyRotation ローテーションの有効化
...
Data Key
GenerateDataKey, GenerateDataKeyWithoutPlaintext 生成
Encrypt 暗号化
Decrypt 複合化
仕組み
暗号化
1. KMS にデータキーをリクエスト
2. データキー & 暗号化済みデータキー を取得
3. データキーでデータを暗号化し、消す (暗号化済みデータキーは保持)
https://gyazo.com/cb45aae51e49a7e339e0f9c6af231220
複合化
1. KMS に暗号化済みデータキーを渡し、データキーをリクエスト
2. データキーを取得
3. データキーでデータを複合化し、消す
https://gyazo.com/73fcf428e8d586189469b7d2c8c7f6ec
ローテーション
マスターキー は、一年毎にローテーションできる
ローテーションされた場合、ローテーション以前のマスターキーで作成されたデータキー での複合化はできなくなり、新しくデータキーを作り直す必要がある?
特徴
データキーが漏洩しても、影響は局所的
暗号化対象毎に固有
大容量データ暗号化のパフォーマンスが向上
暗号化対象のデータ自体はやりとりしないため
大量のデータキーを管理する必要はなく、マスターキーのみ管理すれば良い
マルチテナンシーで動作する